<?php 
/**
 *  Por Federico Pisarello - SisDev Software (c) 2013 - Buenos Aires, Argentina.
 * 	fpisarello@sisdevsoft.com
 */

require("includes/funciones.inc.php");

session_start();
if(!isset($_SESSION['nombreUsuario']))
	exit();

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);

function searchABMArticulos()
{
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	
	$datatables
			->select('a.idArticulo, a.codProducto, a.grupoProducto, a.nombreFacturacion, um.descripcion, a.precio')
			->add_column('edit', '<img src="images/details_open.png">')
			->from('articulos a')
			->join('unidad_medida um','um.idUnidadMedida = a.idUnidadCompra', 'inner')
			->where("a.estado <> '".$stateErase."'");

	return $datatables->generate();	
}

function addOrEdit()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$DB->StartTrans(); // start transaction
	
	if(!isset($_REQUEST["idArticulo"])){
			
		$strSQL = "INSERT INTO articulos ( ";
		$strSQL .= "	codProducto, ";
		$strSQL .= "	grupoProducto, ";
		$strSQL .= "	nombreFacturacion, ";
		$strSQL .= "	idUnidadCompra, ";
		$strSQL .= "	estado, ";
		$strSQL .= "	precio, ";
		$strSQL .= "	mtsPieza, ";
		$strSQL .= "	foto, ";
		$strSQL .= "	idAlicuota ";
		$strSQL .= "	) VALUES ( ";
		$strSQL .= "	'".mb_strtoupper($_REQUEST["codProducto"], "UTF-8")."', ";
		$strSQL .= "	'".mb_strtoupper($_REQUEST["grupoProducto"], "UTF-8")."', ";
		$strSQL .= "	'".mb_strtoupper($_REQUEST["nombreFacturacion"], "UTF-8")."', ";
		$strSQL .= "	'".$_REQUEST["cmbUnidadCompra"]."', ";
		$strSQL .= "	'".$stateAdd."', ";
		$strSQL .= "	'".$_REQUEST["precio"]."', ";
		$strSQL .= "	'".$_REQUEST["mtsPieza"]."', ";
		$strSQL .= "	'".substr($_REQUEST["joImagen"], 1,-1)."', ";
		$strSQL .= "	'".$_REQUEST["cmbAlicuota"]."' ";
		$strSQL .= "	)";
		
		$DB->Execute($strSQL);
		
		$insert_ID = $DB->Insert_ID();
		
		for ($i = 1; $i <= 10; $i++) {
			if($_REQUEST["insumo" . $i]!=$NULL_VALUE) {
				$strSQL = "INSERT INTO articulos_insumos ( ";
				$strSQL .= "	idArticulo, ";
				$strSQL .= "	idInsumo, ";
				$strSQL .= "	idUnidad, ";
				$strSQL .= "	cantidad ";
				$strSQL .= "	) VALUES ( ";
				$strSQL .= "	'".$insert_ID."', ";
				$strSQL .= "	'".$_REQUEST["insumo" . $i]."', ";
				$strSQL .= "	'".$_REQUEST["unidad" . $i]."', ";
				$strSQL .= "	'".$_REQUEST["cantidad" . $i]."' ";
				$strSQL .= "	)";
					
				$DB->Execute($strSQL);
			}
		}
		
		//Variedades Articulo
		for ($i = 1; $i <= 10; $i++) {
			if(isset($_REQUEST["#".$i])) {
				$strSQL = "INSERT INTO articulos_variedades ( ";
				$strSQL .= "	idArticulo, ";
				$strSQL .= "	variedad, ";
				$strSQL .= "	cantidad ";
				$strSQL .= "	) VALUES ( ";
				$strSQL .= "	'".$insert_ID."', ";
				$strSQL .= "	'"."#" . $i."', ";
				$strSQL .= "	'".$_REQUEST["can#" . $i]."' ";
				$strSQL .= "	)";
					
				$DB->Execute($strSQL);
			}
		}
	}
	else{
		$strSQL = "UPDATE articulos SET ";
		$strSQL .= "	codProducto = '".mb_strtoupper($_REQUEST["codProducto"], "UTF-8")."', ";
		$strSQL .= "	grupoProducto = '".mb_strtoupper($_REQUEST["grupoProducto"], "UTF-8")."', ";
		$strSQL .= "	nombreFacturacion = '".mb_strtoupper($_REQUEST["nombreFacturacion"], "UTF-8")."', ";
		$strSQL .= "	idUnidadCompra = '".$_REQUEST["cmbUnidadCompra"]."', ";
		$strSQL .= "	estado = '".$stateModify."', ";
		$strSQL .= "	precio = '".$_REQUEST["precio"]."', ";
		$strSQL .= "	mtsPieza = '".$_REQUEST["mtsPieza"]."', ";
		$strSQL .= "	foto = '".substr($_REQUEST["joImagen"], 1,-1)."', ";
		$strSQL .= "	idAlicuota = '".$_REQUEST["cmbAlicuota"]."' ";
		$strSQL .= " WHERE idArticulo = ". $_REQUEST["idArticulo"];
		
		$DB->Execute($strSQL);
		
		$DB->Execute("DELETE FROM articulos_insumos WHERE idArticulo = ". $_REQUEST["idArticulo"]);
		for ($i = 1; $i <= 10; $i++) {
			if($_REQUEST["insumo" . $i]!=$NULL_VALUE) {
				$strSQL = "INSERT INTO articulos_insumos ( ";
				$strSQL .= "	idArticulo, ";
				$strSQL .= "	idInsumo, ";
				$strSQL .= "	idUnidad, ";
				$strSQL .= "	cantidad ";
				$strSQL .= "	) VALUES ( ";
				$strSQL .= "	'".$_REQUEST["idArticulo"]."', ";
				$strSQL .= "	'".$_REQUEST["insumo" . $i]."', ";
				$strSQL .= "	'".$_REQUEST["unidad" . $i]."', ";
				$strSQL .= "	'".$_REQUEST["cantidad" . $i]."' ";
				$strSQL .= "	)";
	
				$DB->Execute($strSQL);
			}
		}
		
		//Variedades Articulo
		for ($i = 1; $i <= 10; $i++) {
			if(isset($_REQUEST["#".$i])) {
				$strSQL = "INSERT INTO articulos_variedades ( ";
				$strSQL .= "	idArticulo, ";
				$strSQL .= "	variedad, ";
				$strSQL .= "	cantidad ";
				$strSQL .= "	) VALUES ( ";
				$strSQL .= "	'".$_REQUEST["idArticulo"]."', ";
				$strSQL .= "	'"."#" . $i."', ";
				$strSQL .= "	'".$_REQUEST["can#" . $i]."' ";
				$strSQL .= "	)";
					
				$DB->Execute($strSQL);
			}
		}
	}
	
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "Error al Grabar el Art&iacute;culo";
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = "El Art&iacute;culo fue Guardado con Exito";
	}	
	return json_encode($arrJSON);
}

function del()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$DB->StartTrans(); // start transaction
	$DB->Execute("UPDATE articulos SET estado = '$stateErase' WHERE idArticulo = " . $_REQUEST["idArticulo"]); // execute query

	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "Error al Eliminar el Articulo";
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = "El Articulo se Elimino Correctamente";
	}	
	return json_encode($arrJSON);
}

function editArticulo()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsArticulo = $DB->Execute("SELECT * FROM articulos WHERE estado <> '$stateErase' AND idArticulo = " . $_REQUEST["idArticulo"]); // execute query
						
	if(!$rsArticulo->EOF){
		$joArticulo->data['codProducto'] = $rsArticulo->fields("codProducto");
		$joArticulo->data['grupoProducto'] = $rsArticulo->fields("grupoProducto");
		$joArticulo->data['nombreFacturacion'] = $rsArticulo->fields("nombreFacturacion");
		$joArticulo->data['idUnidadCompra'] = $rsArticulo->fields("idUnidadCompra");
		$joArticulo->data['precio'] = $rsArticulo->fields("precio");
		$joArticulo->data['idAlicuota'] = $rsArticulo->fields("idAlicuota");
		$joArticulo->data['foto'] = $rsArticulo->fields("foto");
		$joArticulo->data['mtsPieza'] = $rsArticulo->fields("mtsPieza");
		
		$i=1;
		$rsArticuloInsumos = $DB->Execute("SELECT ai.*, i.descripcion descInsumo, u.descripcion descUnidad FROM articulos_insumos ai
									INNER JOIN insumos i ON i.idInsumo = ai.idInsumo
									INNER JOIN unidad_medida u ON u.idUnidadMedida = ai.idUnidad
									WHERE idArticulo = " . $rsArticulo->fields("idArticulo")); // execute query
	
		while(!$rsArticuloInsumos->EOF){
		
			$joArticulo->data['idInsumo'.$i] = $rsArticuloInsumos->fields("idInsumo");
			$joArticulo->data['descInsumo'.$i] = $rsArticuloInsumos->fields("descInsumo");
			$joArticulo->data['idUnidad'.$i] = $rsArticuloInsumos->fields("idUnidad");
			$joArticulo->data['descUnidad'.$i] = $rsArticuloInsumos->fields("descUnidad");
			$joArticulo->data['cantidad'.$i++] = $rsArticuloInsumos->fields("cantidad");
		
			$rsArticuloInsumos->MoveNext();
		}
		
		$i=1;
		$rsArticuloVariedades = $DB->Execute("SELECT * FROM articulos_variedades ai WHERE idArticulo = " . $rsArticulo->fields("idArticulo")); // execute query
		
		$arrArticuloVariedad = array();
		while(!$rsArticuloVariedades->EOF){
			$objArticuloVariedad = "";
			$objArticuloVariedad->variedad = $rsArticuloVariedades->fields("variedad");
			$objArticuloVariedad->cantidad = $rsArticuloVariedades->fields("cantidad");
			
			array_push($arrArticuloVariedad, $objArticuloVariedad);
		
			$rsArticuloVariedades->MoveNext();
		}
		$joArticulo->data['articulosVariedades'] = $arrArticuloVariedad;
		
		return json_encode($joArticulo->data);
	}
	else
		return json_encode(array());
}

function getInsumos()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	$rsInsumos = $DB->Execute("SELECT * FROM insumos WHERE estado <> '$stateErase' AND descripcion LIKE '%".$_REQUEST['term']."%'");

	if($rsInsumos->EOF)
		return json_encode(array());

	$i=0;
	while(!$rsInsumos->EOF){
		$arrInsumo->data[$i]['id'] = $rsInsumos->fields('idInsumo');
		$arrInsumo->data[$i++]['value'] = $rsInsumos->fields('descripcion');
		$rsInsumos->MoveNext();
	}

	return json_encode($arrInsumo->data);
}

function getUnidadesMedida()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	$rsUnidad = $DB->Execute("SELECT * FROM unidad_medida WHERE estado <> '$stateErase' AND descripcion LIKE '%".$_REQUEST['term']."%'");

	if($rsUnidad->EOF)
		return json_encode(array());

	$i=0;
	while(!$rsUnidad->EOF){
		$arrUnidad->data[$i]['id'] = $rsUnidad->fields('idUnidadMedida');
		$arrUnidad->data[$i++]['value'] = $rsUnidad->fields('descripcion');
		$rsUnidad->MoveNext();
	}

	return json_encode($arrUnidad->data);
}

function getAlicuotas()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	$rsAlicuota = $DB->Execute("SELECT * FROM alicuotas WHERE tipo = '$venta'");

	if($rsAlicuota->EOF)
		return json_encode(array());

	$i=0;
	while(!$rsAlicuota->EOF){
		$arrAlicuota->data[$i]['idAlicuota'] = $rsAlicuota->fields('idAlicuota');
		$arrAlicuota->data[$i++]['valor'] = $rsAlicuota->fields('valor');
		$rsAlicuota->MoveNext();
	}

	return json_encode($arrAlicuota->data);
}


function searchArticuloDetalle()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsArticulo = $DB->Execute("SELECT * FROM articulos WHERE idArticulo = ".$_REQUEST["idArticulo"]);
	
	if($rsArticulo->EOF)
		return "";
		
	$rsArticuloInsumos = $DB->Execute("SELECT ai.*, i.descripcion descInsumo, u.descripcion descUnidad FROM articulos_insumos ai
											INNER JOIN insumos i ON i.idInsumo = ai.idInsumo
											INNER JOIN unidad_medida u ON u.idUnidadMedida = ai.idUnidad
											WHERE idArticulo = " . $rsArticulo->fields("idArticulo")); // execute query
	
	$strOutput = "<tr><td>Insumo</td><td>Cantidad</td><td>Unidad</td></tr>";
	
	while(!$rsArticuloInsumos->EOF){
		$strOutput .= "<tr><td>".$rsArticuloInsumos->fields("descInsumo")."</td><td>".$rsArticuloInsumos->fields("cantidad")."</td><td>".$rsArticuloInsumos->fields("descUnidad")."</td></tr>";
		$rsArticuloInsumos->MoveNext();
	}
	
	return $strOutput;
}

function getUnidadesMedidaArticulo()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	$rsUnidadMedida = $DB->Execute("SELECT * FROM unidad_medida");

	if($rsUnidadMedida->EOF)
		return json_encode(array());

	$i=0;
	while(!$rsUnidadMedida->EOF){
		$arrUnidadMedida->data[$i]['idUnidadMedida'] = $rsUnidadMedida->fields('idUnidadMedida');
		$arrUnidadMedida->data[$i++]['descripcion'] = $rsUnidadMedida->fields('descripcion');
		$rsUnidadMedida->MoveNext();
	}

	return json_encode($arrUnidadMedida->data);
}

function getGrupoProducto()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsGrupoProducto = $DB->Execute("SELECT DISTINCT grupoProducto FROM articulos WHERE estado <> '$stateErase'");
	
	if($rsGrupoProducto->EOF)
		return json_encode(array());
	
	$i=0;
	while(!$rsGrupoProducto->EOF){
		$arrGrupoProducto->data[$i++]['grupoProducto'] = $rsGrupoProducto->fields('grupoProducto');
		$rsGrupoProducto->MoveNext();
	}
	
	return json_encode($arrGrupoProducto->data);
}

function updateBonif()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$DB->StartTrans(); // start transaction
	
	$strSQL = "SELECT * FROM articulos WHERE grupoProducto = '".$_REQUEST['cmbGrupoProducto']."'";
	$rsArticulos = $DB->Execute($strSQL);
	while(!$rsArticulos->EOF){
		$DB->Execute("UPDATE articulos SET bonif1 = '".$_REQUEST['bonif1']."', bonif2 = '".$_REQUEST['bonif2']."', bonif3 = '".$_REQUEST['bonif3']."' WHERE idArticulo = ".$rsArticulos->fields('idArticulo'));		
		$rsArticulos->MoveNext();
	}
	
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = "Error al Actualizar los Art&iacute;culo";
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = "La Actualizaci&oaacute;n de Art&iacute;culo fue ejecutada con Exito";
	}
	return json_encode($arrJSON);
}

switch($_REQUEST['accion'])
{
	case "EDIT":
		echo editArticulo();
		break;
	case "DELETE":
		echo del();
		break;
	case "search":
		echo searchABMArticulos();
		break;
	case "addOrEdit":
		echo addOrEdit();
		break;
	case "getInsumos":
		echo getInsumos();
		break;
	case "getUnidadesMedida":
		echo getUnidadesMedida();
		break;
	case "getUnidadesMedidaArticulo":
		echo getUnidadesMedidaArticulo();
		break;
	case "searchArticuloDetalle":
		echo searchArticuloDetalle();
		break;
	case "getGrupoProducto":
		echo getGrupoProducto();
		break;
	case "getAlicuotas":
		echo getAlicuotas();
		break;
	case "updateBonif":
		echo updateBonif();
		break;
}
?>
